                 Rainlendar Skinning Instructions
                 --------------------------------

This document gives some details how you can skin Rainlendar. Most of the 
skinning can be done via the GUI, which is probably the easiest way to modify 
the skins. However, sometimes it might be useful to do the changes directly 
in the skin files. The skin files weren't originally meant to be edited by 
humans, so some of the entries might be a bit unintuitive.

The items (numbers) in an image can be placed either horizontally or 
vertically. The correct placement is determined from the dimensions of the 
image (i.e. whichever is bigger: height or width). The images must be cropped
so that they don't hold any extra space and their width (or height) must be 
divisional with the number of items in the image. The current version of 
Rainlendar supports BMP, JPG and PNG files. Them PNGs can include alpha mask.

Please note that if you disable all items on the calendar the window won't have
any size and it will be impossible to quit it. You'll have to kill the process
in order to quit the program.
 
The name of the skin file can be anything that ends with ".ini".
The skins must be placed in a separate subfolders, which will give the name
to the skin. The same folder can also contain several skin ini-files.

Only the ones that affect the outlook of the calendar are explained here. 
Check the Rainlendar's manual for info about the general settings.

-----------------------------------------------------------------------

BackgroundBitmapName
--------------------
The filename of the background picture to use behind the calendar. You can also 
select if you want the image to be tiled or stretched if it's too small for the
calendar window. It's also possible to grab the desktop behind the calendar and 
use it as background.

BackgroundMode
--------------
0 = Tile background to fill the whole window
1 = Transparent background
2 = Stretch background to fill the whole window
3 = Solid color background

BackgroundBevel
---------------
0 = No not draw bevel around solid color background
1 = Draw bevel around solid color background

BackgroundSolidColor
--------------------
Color of the solid background defined as BGR hex-value (e.g. BackgroundSolidColor=888888)

ToolTipFont
-----------
The font to be used with the tooltips. Check below for more info about the fonts.

ToolTipFontColor
----------------
Color of the tooltip font defined as BGR hex-value (e.g. ToolTipFontColor=000000)

ToolTipBGColor
--------------
Color of the tooltip background defined as BGR hex-value (e.g. ToolTipBGColor=FFFFFF)

DaysEnable
----------
0 = Do not show days in calendar
1 = Show days in calendar

DaysX
-----
X-position of the days

DaysY
-----
Y-position of the days

DaysW
-----
Width of the days

DaysH
-----
Height of the days

DaysAlign
---------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

DaysRasterizer
--------------
FONT = Use fonts to display the days
BITMAP = Use bitmap to display the days

DaysFont
--------
The font to be used with the days. Check below for more info about the fonts.

DaysFontColor
-------------
Color of the font defined as BGR hex-value (e.g. DaysFontColor=44AAFF)

DaysBitmapName
--------------
Filename of the days bitmap. The bitmap must contain either numbers from 0 to 9
 or from 0 to 31. All the numbers must be same size.

DaysNumOfComponents
-------------------
Number of components in the bitmap. If the bitmap has numbers from 0 to 9, set
this to 10. For numbers from 0 to 31 use value 32. Note that with 32 numbers
the 0 is never used, so it may hold anything. 

DaysSeparation
--------------
The horizontal separation of the numbers (i.e. how close/far the numbers are
placed from each other). This is only applied with bitmaps when the number of 
components is 10. The value can be negative.

DaysIgnoreToday
---------------
0 = Draw a day for today
1 = Do not draw a day for today

DaysIgnoreEvent
---------------
0 = Draw a day for event days
1 = Do not draw a day for event days

TodayEnable
-----------
0 = Do not show today in calendar
1 = Show today in calendar

TodayAlign
----------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

TodayRasterizer
---------------
FONT = Use fonts to display the today
BITMAP = Use bitmap to display the today

TodayFont
---------
The font to be used with the today. Check below for more info about the fonts.

TodayFontColor
--------------
Color of the font defined as BGR hex-value (e.g. TodayFontColor=44AAFF)

TodayBitmapName
---------------
Filename of the today bitmap. The bitmap must contain either numbers from 0 to 9
 or from 0 to 31. It can also contain just one image.

TodayNumOfComponents
--------------------
Number of components in the bitmap. If the bitmap has numbers from 0 to 9, set
this to 10. For numbers from 0 to 31 use value 32. If the bitmap contains only 
one image use value 1.

TodaySeparation
---------------
The horizontal separation of the numbers (i.e. how close/far the numbers are
placed from each other). This is only applied with bitmaps when the number of 
components is 10. The value can be negative.

WeekdaysEnable
--------------
0 = Do not show weekdays in calendar
1 = Show weekdays in calendar

WeekdaysAlign
-------------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

WeekdaysRasterizer
------------------
FONT = Use fonts to display the weekdays
BITMAP = Use bitmap to display the weekdays

WeekdaysFont
------------
The font to be used with the today. Check below for more info about the fonts.

WeekdaysFontColor
-----------------
Color of the font defined as BGR hex-value (e.g. WeekdaysFontColor=44AAFF)

WeekdayNames
------------
Weekday strings separated with '/'-char 
(E.g. WeekdayNames=Sun/Mon/Tue/Wed/Thu/Fri/Sat)

WeekdaysBitmapName
------------------
Filename of the weekdays bitmap. The bitmap must contain 7 items (one for each
 weekday).

MonthEnable
-----------
0 = Do not show month in calendar
1 = Show month in calendar

MonthX
------
X-position of the month

MonthY
------
Y-position of the month

MonthAlign
----------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

MonthRasterizer
---------------
FONT = Use fonts to display the months
BITMAP = Use bitmap to display the months

MonthFont
---------
The font to be used with the month. Check below for more info about the fonts.

MonthFontColor
--------------
Color of the font defined as BGR hex-value (e.g. WeekdaysFontColor=44AAFF)

MonthBitmapName
---------------
Filename of the months bitmap. The bitmap must contain 12 items (one for each 
month).

MonthNames
----------
Names of the months separated with '/'-char 
(E.g MonthNames=January/February/March/April/May/June/July/August/September/October/November/December)

YearEnable
----------
0 = Do not show year in calendar
1 = Show year in calendar

YearX
-----
X-position of the year

YearY
-----
Y-position of the year

YearAlign
---------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

YearRasterizer
--------------
FONT = Use fonts to display the years
BITMAP = Use bitmap to display the years

YearFont
--------
The font to be used with the year. Check below for more info about the fonts.

YearFontColor
-------------
Color of the font defined as BGR hex-value (e.g. WeekdaysFontColor=44AAFF)

YearBitmapName
--------------
Filename of the year bitmap. The bitmap must contain numbers from 0 to 9.

DaysSeparation
--------------
The horizontal separation of the numbers (i.e. how close/far the numbers are
placed from each other). The value can be negative.

EventEnable
-----------
0 = Do not show events in calendar
1 = Show events in calendar

EventAlign
----------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

EventRasterizer
---------------
FONT = Use fonts to display the events
BITMAP = Use bitmap to display the events

EventFont
---------
The font to be used with the events. Check below for more info about the fonts.

EventFontColor
--------------
Color of the font defined as BGR hex-value (e.g. WeekdaysFontColor=44AAFF)

EventBitmapName
---------------
Filename of the events bitmap. The bitmap must contain either numbers from 
0 to 9 or from 0 to 31. It can also contain just one image.

EventNumOfComponents
--------------------
Number of components in the bitmap. If the bitmap has numbers from 0 to 9, set
this to 10. For numbers from 0 to 31 use value 32. If the bitmap contains only
one image use value 1.

EventSeparation
---------------
The horizontal separation of the numbers (i.e. how close/far the numbers are
placed from each other). This is only applied with bitmaps when the number of 
components is 10. The value can be negative.

EventInCalendar
---------------
0 = Do not show event texts inside the calendar
1 = Show event texts inside the calendar

EventFont2
----------
The font to be used with the events texts that are dran on the calendar. Check
below for more info about the fonts.

EventFontColor2
---------------
Color of the font defined as BGR hex-value (e.g. WeekdaysFontColor=44AAFF)

WeekNumbersEnable
-----------------
0 = Do not show week numbers in calendar
1 = Show week numbers in calendar

WeekNumbersAlign
----------------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

WeekNumbersRasterizer
---------------------
FONT = Use fonts to display the week numbers
BITMAP = Use bitmap to display the week numbers

WeekNumbersFont
---------------
The font to be used with the week numbers. Check below for more info about the
fonts.

WeekNumbersFontColor
--------------------
Color of the font defined as BGR hex-value (e.g. WeekdaysFontColor=44AAFF)

WeekNumbersBitmapName
---------------------
Filename of the week numbers bitmap. The bitmap must contain either numbers 
from 0 to 9 or from 0 to 53. It can also contain just one image.

WeekNumbersNumOfComponents
--------------------------
Number of components in the bitmap. If the bitmap has numbers from 0 to 9, set
this to 10. For numbers from 0 to 53 use value 54.

WeekNumbersSeparation
---------------------
The horizontal separation of the numbers (i.e. how close/far the numbers are
placed from each other). This is only applied with bitmaps when the number of 
components is 10. The value can be negative.

TodoW
-----
The width of the todo window.

TodoFont
--------
The font to be used with the todo items. Check below for more info about the
fonts.

TodoFontColor
-------------
Color of the font defined as BGR hex-value (e.g. TodoFontColor=44AAFF)

TodoBitmapName
--------------
Name of the todo window's background image.

TodoBitmapMargins
-----------------
Margins for the bitmap scaling. The margins are four comma separated values 
that define the non-scaled part of the images borders. e.g. TodoBitmapMargins=10,10,0,0 
would leave 10 pixels from the left and top borders as is and scale the rest.

TodoTextMargins
---------------
Margins for the text. The margins are four comma separated values 
that define the borders for the text (i.e. text is not drawn on the border area).

TodoSeparation
--------------
The horizontal separation of the todo items (i.e. how close/far the texts are
placed from each other).

TodoItemBitmapName
------------------
Name of the image for the todo items.

TodoItemAlign
-------------
0 = TopLeft
1 = TopRight
2 = TopCenter
16 = MiddleLeft
17 = MiddleRight
18 = Middle
32 = BottomLeft
33 = BottomRight
34 = BottomCenter

TodoItemOffset
--------------
Offset to the todo item. This is two comma separated values (e.g. TodoItemOffset=10,-10)

MessageBoxBitmapName
--------------------
Name of the messagebox background image.

MessageBoxFont
--------------
The font to be used with the messagebox texts. Check below for more info about the
fonts.

MessageBoxFontColor
-------------------
Color of the font defined as BGR hex-value (e.g. TodoFontColor=44AAFF)

MessageBoxBitmapMargins
-----------------------
Margins for the bitmap scaling. The margins are four comma separated values 
that define the non-scaled part of the images borders. e.g. MessageBoxBitmapMargins=10,10,0,0 
would leave 10 pixels from the left and top borders as is and scale the rest.

MessageBoxTextMargins
---------------------
Margins for the text. The margins are four comma separated values 
that define the borders for the text (i.e. text is not drawn on the border area).

MessageBoxTextMaxWidth
----------------------
Maximum width in pixels that the message box can scale. The text is wrapped if longer than that.

MessageBoxSeparation
--------------------
The horizontal separation of the event texts (i.e. how close/far the texts are
placed from each other).


-----------------------------------------------------------------------
Fonts
-----------------------------------------------------------------------

The fonts are defined with 13 values and the name of the font all separated 
with '/'-char. The most important values are the first one which defines the 
height of the font and the last, which is the typeface name of the font. The 
height of the font is defined in logical size and not in the point size.

E.g. -17/0/0/0/700/0/0/0/0/3/2/1/34/Arial

The different values are in order:

height of font
average character width
angle of escapement
base-line orientation angle
font weight
italic attribute option
underline attribute option
strikeout attribute option
character set identifier
output precision
clipping precision
output quality
pitch and family
typeface name

Check CreateFont() in Win32API documentation for more info.


-----------------------------------------------------------------------
Profiles
-----------------------------------------------------------------------

With profiles you can customize individual events. In the previous versions
(<= 0.11) it was possible to override the event font color / bitmap in
the Edit Event dialog. This is not supported anymore as the new profile
system provides a better(?) way to customize the events.

When you create an event there is a combo box below the message's text 
box, which can be used to select the profile for the event. The combo box
lists the profiles that are defined in the current skin's ini-file, but 
you can also give a custom profile name. If a certain profile is not 
defined in a skin a default settings are used instead.

The profiles are defined in the skin file by making a new section. The name
of the section must start with the word "Profile" (without the quotes). After
that you can put pretty much anything to make the section unique (i.e. there
cannot be two sections that have same name (i.e. the string between []-chars, 
not the "Name=" string).

The profile section must have a key called Name, which will give the identity 
to the profile. The name is the one that is displayed in the Edit Event dialog.

Other keys that can be in the profile section are:

ToolTipFontColor
EventBitmapName
EventFontColor
EventFontColor2
EventIconName
EventIconAlign
EventDrawAlways
Priority

The values for the keys are exactly the same as defined above. The profile 
settings override the default skin settings, so for example if the default
ToolTipFontColor value is black and you create a profile that defines it
white, all events that use that profile will draw the tooltip texts white.
Note that it is not necessary to give all the keys always; you can define
just the ones that are necessary (default values are used for the missing
keys).

The EventIconName, EventIconAlign and EventDrawAlways can only be used with 
the profiles. The event icon is a small image that is displayed on top of the 
event with the given profile. The align uses the same alignment system as other 
aligns (check e.g. DaysAlign for the codes). If the EventDrawAlways is set to 1 
it means that the event is drawn always on the calendar.

The priority defines what is drawn on the calendar when there are several
event on the same day. The repeating events also have predefined priorities so 
that less frequently happening events have higher priority. Like this:

Daily Priority    = 10
Weekly Priority   = 20
Monthly Priority  = 30
Annually Priority = 40
Single Priority   = 50

The profile's priority value is added to this to determine the actual priority
for the event.

Currently it is not possible to create/edit the profiles from the GUI. 
You need to create by hand with a text editor.

E.g.

[Profile 1]
Name=Sunday
ToolTipFontColor=00DDFF
EventFontColor=DD8888

[Profile 2]
Name=Important
ToolTipFontColor=FFFFFF
EventFontColor=FFFFFF
EventFontColor2=FFFFFF
EventIconName=Icons/Lightning.png
EventIconAlign=18
